02 Starwars

Une animation est une suite d'image qui défile à un certain rythme...
Il suffit donc de montrer une information à l'écran, puis de la changer et ainsi de suite pour créer
une animation...

Objectifs

Le cerveau humain croit à une animation à une fréquence de

1 image par seconde 2 images par seconde 25 images par seconde Il sait toujours que ce n'est qu'une illusion

Horizontal

02 Droite

Pour réaliser cette animation, il faut imaginer que la console ressemble à un quadrillage avec des coordonnées:

02 Quadrillage

Ainsi, l'animation correspond à faire bouger le texte sur la grille:

02 Quadrillage Anim1

Placer le curseur sur la grille

Pour placer le curseur à un endroit spécifique (avant d'écrire), on utilise les instructions suivantes:

Placer le curseur à la colonne 5.
Placer le curseur à la ligne 1.

Si le numéro dépend d'une valeur stockée en mémoire, alors ça donne

//Créer une zone mémoire nommée #colonne avec la valeur 1.
Placer le curseur à la colonne #colonne.

Animation

À présent, nous sommes en mesure d'écrire une première version de l'animation horizontale qui est une répétition de l'élément suivant:

Placer le curseur à la colonne 1.
Afficher "==>".
Attendre 200ms.

Et voici le code:

02 Animation1 Diff

Une fois la correction faite, voici le résultat:
02 Animation 1b

Simplification du code

Le code actuel ressemble un peu à du copier/coller et cela est très ennuyeux lorsqu'on doit faire des modifications (d'ailleurs c'est ce qui coûte cher en développement logiciel)...
Pour écrire du code durable, on a donc tout intérêt à opérer les modifications suivantes.

Stocker le symbole qui avance en mémoire

Comme pour le délai, on va utiliser une zone mémoire pour y enregistrer et référencer le symbole qui avance et on va même en profiter pour proposer à l'utilisateur de le choisir:

02 Animation 1c

Répéter des instructions

Peut-être as-tu remarqué que le code est très similaire et c'est un signe qu'on peut l'optimiser en utiliser une notion de répétition. D'ailleurs cette notion est la base de la force de l'informatique qui est capable de répéter des opérations de manière très rapide...

Pour cela on utilise le mot clé Répéter qui permet d'éxécuter les opérations à l'intérieur plusieurs fois.
Le programme va donc évoluer selon les 3 étapes suivantes:

02 Boucle1

Et voici en grand le résultat, après modification:

02 Boucle2

Cacher les décors

Sur les vidéos présentées, le curseur (partie clignotante avant le texte à écrire) a été masqué.
Pour faire cela, il suffit d'ajouter la commande suivante:

Masquer le curseur.
//Pour le réactiver: Afficher le curseur.

Dans la peau d'un réalisateur

Sauras-tu adapter le programme pour que l'utilisateur se prenne pour un réalisateur et puisse choisir le nombre de répétitions ?

Défi vertical

En s'inspirant de ce qui a été fait précédemment, il est temps de réaliser le programme suivant:

02 Vertical1

Windows

cls

Linux/Macos

clear

Réagir à une touche

On sait déjà comment récupérer une saisie utilisateur mais il peut être utile d'écouter le clavier et de réagir directement lors de l'appui sur une touche (sans devoir valider avec Enter).

Pour cela, on peut utiliser l'instruction suivante:

Attendre la prochaine touche et la stocker dans #touchePressee.

Ce qui dans un programme complet pourrait ressembler à :

02 Touche1

Flèches directionnelles

ArrowKeys
Pour faire avancer un symbole en appuyant sur la touche Flèche droite, on peut combiner ce qui a été vu jusque là, soit:

02 Fleches

Défi à gauche

02 Arkanoid
Dans le jeu arkanoid, il faut déplacer à gauche ou à droite une capsule qui récupère une bille...

Le défi est donc de s'inspirer du code présenté précédemment et de réagir à la flèche gauche pour arriver au résultat suivant:

02 Fleches2

Il est temps de faire le point sur les compétences acquises: